function EvaluaSeleccion()
  
[fg, tex] = fopen('resultados_evaluacion_final.csv', 'a');

fprintf(fg, '\nResultados de Caliz\n');
cd caliz_multi_final
cargaYEvalua(fg);
cd ..
            
fprintf(fg, ' \nResultados de PALITO \n');
cd palito_multi_final
cargaYEvalua(fg);
cd ..

% fprintf(fg, ' \nResultados de caliz Multiples clases con defectos \n');
% cd caliz_multi_seleccion
% cargaYEvalua(fg);
% cd ..
% 
% fprintf(fg, ' \nResultados de PALITOS MULTIPLES CLASES CON DEFECTO \n');
% cd palito_multi_seleccion
% cargaYEvalua(fg);
% cd ..




st = fclose(fg);

end

function cargaYEvalua(fg)

fprintf(fg, 'Estrategia, Caracteristicas, LDA, D minimal, KNN-10\n');
load est2   ;
evalua(2, est2E,est2T,fg);
load est3   ;
evalua(3, est3E,est3T,fg);
load est4   ;
evalua(4, est4E,est4T,fg);

end


function evalua(j,estE, estT,fg)
cantidadCaracteristicas = [8 10];
load matrizTrainingTest ;%Xe De Xt Dt indice_entrenamiento indice_prueba cantidadCaracteristicas ;
[fi, tex] = fopen('error_evaluacion_caracteristicas.txt', 'a');
for i=1:length(cantidadCaracteristicas)
    final =cantidadCaracteristicas(i);
    %    est1T=zeros(size(cantidadCaracteristicas, 2),   size(Xt,1) ,max(cantidadCaracteristicas));
    X=     zeros (size(Xe,1), final);
    X_test=zeros(size(Xt,1), final);
    X = squeeze(estE(i,:,1:final));
    X_test = squeeze(estT(i,:,1:final));
    PLDA =0;
    PBAYES =0;
    PKNN=0;


    try
        PLDA = evaluaLDA(X, De, X_test,Dt);
    catch me1
        fprintf(fi, 'ERROR LDA  %d %s \n',cantidadCaracteristicas(i), me1.message );
    end
    try
        PBAYES = evaluaDminimal(X, De, X_test,Dt);
    catch me1
        fprintf(fi, 'ERROR MINIMAL  %d %s \n',cantidadCaracteristicas(i), me1.message );
    end
    try
        PKNN = evaluaKNN(X, De, X_test,Dt);
    catch me1
        fprintf(fi, 'ERROR KNN  %d %s \n',cantidadCaracteristicas(i), me1.message );
    end

    fprintf(fg, '\n %d, %d, %f, %f, %f, %f ',j,final, PLDA, PBAYES,PKNN);
    
end
st = fclose(fi);
end


function P = evaluaLDA(X, De, X_test, Dt)
dsXT = lda(X,De, X_test);
[TXT ,pXT]  = confusion(Dt,dsXT);
P = mean(pXT)*100;
end

function P = evaluaDminimal(X, De, X_test, Dt)
dsXT = dminimal(X,De, X_test);
[TXT ,pXT]  = confusion(Dt,dsXT);
P = mean(pXT)*100;
end
function P = evaluaKNN(X, De, X_test, Dt)
dsXT = knn(X,De, X_test,10);
[TXT ,pXT]  = confusion(Dt,dsXT);
P = mean(pXT)*100;
end

